package com.github.jbai.service;
import java.io.File;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import com.github.jbai.APIException;
import com.github.jbai.entity.User;
import com.github.jbai.repository.UserRepository;
import com.github.jbai.util.SecurityUtil;
@Service("userService")
public class UserService {
private @Value("${app.image.store.path}") String path;
@Autowired
private UserRepository userRepository;
@Transactional
public User addUser(User u) {
if (u.getLoginName() == null || u.getName() == null || u.getPassword() == null) {
throw new APIException(400, "bad request");
}
List<User> users = userRepository.findByLoginName(u.getLoginName());
if (users.size() > 0) {
throw new APIException(400, "duplicated login name");
}
//Encrypt password for security
u.setPassword(SecurityUtil.encrypt(u.getName()));
return userRepository.saveAndFlush(u);
}
public List<User> findAllUsers() {
return userRepository.findAll();
}
@Transactional
public void updateProfile(long userId, MultipartFile file) throws Exception {
MediaType mediaType = MediaType.parseMediaType(file.getContentType());
File f = new File(path + File.separator + System.currentTimeMillis() + "." + mediaType.getSubtype());
file.transferTo(f);
User user = userRepository.findOne(userId);
user.setImagePath(f.getAbsolutePath());
userRepository.saveAndFlush(user);
}
}